package com.hb.C_Lambda表达式和集合.高阶函数


/**
 * reduce的进阶版 fold,fold就是有初始化值
 *
        public inline fun <T, R> Iterable<T>.fold(initial: R, operation: (acc: R, T) -> R): R {
        //将传进去的初始化值赋值给accumulator 进行operation操作
        var accumulator = initial
        for (element in this) //迭代传进来的集合
            accumulator = operation(accumulator, element)  //每个元素进行操作
        return accumulator
        }
 */
fun main() {
    //初始化值为穿进去的第一个参数
    println((0..5).fold(5) { acc, i -> acc + i }) // 输出 20

    //传进去一个StringBuilder()对象，
    println((0..5).fold(StringBuilder()) { acc, i -> acc.append(i).append(",") }) // 输出 0,1,2,3,4,5,

    //字符串拼接
    println((0..6).joinToString(","))
}